Курс по регулярным выражениям на PHP 2015 Урок 0. Введение: Представляем Вам уникальный для Рунета онлайн курс, по регулярным выражениям на PHP. Регулярные выражения на PHP - это невероятно мощное средство для работы с текстами, для поиска по массиву текста, проверки и обработки текста, и многое другое. В нашем видеокурсе по регулярным выражениям на PHP, вы ознакомитесь со многими примерами и сами сможете создавать свои шаблоны. При помощи шаблонов регулярных выражений можно найти в тексте буквально что-угодно. Именно благодаря мощи регулярных выражений, они включены во многие языки программирования - PERL, PHP, JavaScript, Python, Ruby и множество других. Поддержка регулярных выражений включена во множество редакторов - Notepad++, Sublime Text, AkelPad, все возможные IDE. Несмотря на все преимущества использования регулярных выражений, многие веб-мастера сами отмечают, что паттерны (шаблоны) регулярных выражений являются их слабым местом. Для новичков шаблоны вообще представляют собой китайскую грамоту. Именно по этим соображениям мы рекомендуем Вам курс по регулярным выражениям на PHP. Благодаря урокам предлагаемого курса Вы на простых и понятных примерах изучите такую относительно сложную тему, как регулярные выражения. В уроках курса регулярные выражения на PHP мы будем двигаться от простейшего к все более и более сложному и, надеюсь, к завершающим урокам курса Вы уже сможете чувствовать себя гораздо более уверенно в этой теме. В нашем видеокурсе по регулярным выражениям на PHP, вы ознакомитесь со многими примерами и сами сможете создавать свои шаблоны. Урок 1. Введение и общие понятия: От автора: регулярные выражения — это невероятно мощное средство для работы с текстами — для поиска по массиву текста и для обработки текста. При помощи шаблонов регулярных выражений можно найти в тексте буквально что-угодно. Именно благодаря мощи регулярных выражений, они включены во многие языки программирования — PERL, PHP, JavaScript, Python, Ruby и множество других. Поддержка регулярных выражений включена во множество редакторов — Notepad++, Sublime Text, AkelPad, всевозможные IDE. По результатам урока Вы познакомитесь с понятием «регулярные выражения», узнаете историю их появления и развития, получите представление об источниках получения информации по этой непростой теме, а также получите необходимый инструментарий, облегчающий создание и тестирование шаблонов. Урок 2. Метасимволы и модификаторы шаблона: От автора: в этом уроке мы начнем постигать азы такой непростой темы, как регулярные выражения. Знакомство с любым языком начинается с изучения синтаксиса данного языка. Именно поэтому мы начнем этот урок с изучения синтаксиса шаблонов регулярных выражений. По результатам урока Вы познакомитесь с ключевыми понятиями языка регулярных выражений – литералы и метасимволы. Также Вы узнаете о понятии «модификаторы» и об их влиянии на шаблон. Кроме того, Вы узнаете, как правильно написать свой первый шаблон. Урок 3. Символьные классы: От автора: в этом уроке мы продолжаем изучать регулярные выражения, и узнаем, благодаря чему использование шаблонов позволяет организовывать гораздо более сложную работу с текстом, в отличие от функций для работы со строками и стандартного поиска. По результатам урока Вы познакомитесь с особенностями использования символьного класса. Узнаете о нюансах и возможных ошибках при работе с символьными классами, а также научитесь указывать целый диапазон символов при составлении шаблона. Урок 4. Работа с пробельными символами: От автора: данный урок посвящен работе с непечатаемыми или пробельными символами. Будут рассмотрены только наиболее часто используемые из них – пробел, табуляция и перевод строки. Основной акцент в уроке сделан на нюансы работы именно с последним из группы пробельных символов – переводом строки. Рассмотрены особенности обозначения данного символа в зависимости от операционной системы. По результатам урока Вы узнаете о работе с пробельными или т.н. непечатаемыми символами. Также Вы научитесь правильно искать переводы строк в зависимости от операционной системы. Урок 5. Метасимволы символьных классов: От автора: в этом уроке мы с Вами познакомимся с метасимволами символьных классов. Еще их называют обобщающими символьными классами. Данные метасимволы несколько сокращают запись шаблона, поскольку заменяют собой один или несколько символьных классов. Также мы рассмотрим использование символьных классов POSIX. Последний вопрос рассмотрен исключительно в ознакомительных целях, поскольку на практике символьные классы POSIX практически не используются. По результатам урока Вы узнаете о метасимволах символьных классов, научитесь их использовать, а также узнаете о нюансах их использования. Кроме того, Вы узнаете о символьных классах POSIX. Урок 6. Квантификаторы: От автора: в этом уроке мы с Вами познакомимся с группой метасимволов под названием квантификаторы. Все те знания, полученные на предыдущих занятиях, пока что совершенно «не говорят» о той мощи, которую предоставляют шаблоны регулярных выражений. В принципе, пока что практически все предыдущие задачи (поиск символа или последовательности символов) можно было решить без использования шаблонов. Квантификаторы – это та группа метасимволов, позволяющих ощутить практически безграничные возможности регулярных выражений и решить типовые задачи, недоступные для решения прочими средствами. По результатам урока Вы узнаете о группе метасимволов под названием квантификаторы. Научитесь использовать тот или иной квантификатор для описания той или иной валидируемой части. Ну и составим простейшее регулярное выражение для валидации адреса email. Урок 7. Интервальные квантификаторы: От автора: в этом уроке мы с Вами познакомимся с еще одним видом квантификаторов – интервальными квантификаторами. Интервальные квантификаторы позволяют точно указывать количество вхождений того или иного символа или группы символов. Таким образом, мы получаем возможность гораздо более точно составлять шаблоны для валидации. По результатам урока Вы узнаете об интервальных квантификаторах, которые могут значительно расширить Ваши возможности при решении задач валидирования. Урок 8. Жадные и ленивые квантификаторы: От автора: этот урок мы посвятим изучению свойств жадности и ленивости квантификаторов. Квантификаторы по своей природе являются жадными, т.е. стараются захватить как можно больше вхождений за один раз. Но порой с каждым вхождением необходимо работать отдельно. Именно для этого квантификаторы можно сделать ленивыми. Благодаря управлению жадностью квантификаторов мы можем составлять шаблоны, которые будут корректно работать с множественными вхождениями в тексте. По результатам урока Вы узнаете об основополагающих свойствах квантификаторов – жадности и ленивости. Урок 9. Метасимволы начала и конца строки: От автора: в этом уроке мы познакомимся с метасимволами позиционной проверки, которые еще называют «якорями». Мы рассмотрим 2 метасимвола – это метасимволы начала и конца строки. В отличие от изученных ранее метасимволов, якорные метасимволы не захватывают совпадения, а лишь устанавливают соответствие позиций. Также в уроке рассмотрены нюансы работы многострочного (расширенного) режима поиска в регулярных выражениях. По результатам урока Вы узнаете о якорных метасимволах. Узнаете о возможных нюансах при работе в многострочном режиме, нюансах, о которых редко пишут даже в учебниках. Урок 10. Метасимволы границы и не границы слова: От автора: в данном уроке мы продолжим знакомство с якорными метасимволами и рассмотрим метасимвол границы слова и метасимвол не границы слова. Как и прочие якорные метасимволы, метасимволы, изучаемые в данном уроке, находят определенные позиции в валидируемой строке. По результатам урока Вы узнаете о якорных метасимволах, указывающих на границу слова и на позицию, не являющуюся границей слова. Также Вы узнаете о том, что есть слово с позиции регулярных выражений, узнаете о словообразующих символах и о границах слова. Урок 11. Подвыражения в шаблоне: От автора: в этом уроке мы познакомимся с логическим оператором ИЛИ, а также рассмотрим вопрос использования подвыражений в шаблоне. Одна из полезных возможностей, которую предоставляют подвыражения – это группировка. Эта возможность используется во многих шаблонах, и потому мы уделим ей особое внимание. По результатам урока Вы узнаете об использовании подвыражений в регулярных выражениях, а также о метасимволе, являющемся логическим оператором ИЛИ. Урок 12. Обратные ссылки: От автора: одной из полезных и, порой, просто незаменимых возможностей регулярных выражений являются обратные ссылки. Обратные ссылки работают в паре с подвыражениями, которые образуют, как вы помните, скобки. Суть обратных ссылок заключается в том, что мы можем повторно использовать найденные ранее и запомненные группы, т.е. то, что совпало с подвыражением в скобках. Классическая задача, которая решается с помощью обратных ссылок, — это поиск двойных слов. Также с помощью обратных ссылок можно производить операции замены, о чем мы поговорим с вами в следующем уроке. По результатам урока вы познакомитесь и научитесь использовать на практике такую замечательную возможность регулярных выражений, как обратные ссылки. Это еще одна возможность, определяющая мощь и гибкость регулярных выражений. Урок 13. Операция замены в регулярных выражениях: От автора: данный урок является логическим продолжением темы обратных ссылок, рассмотренной в предыдущем уроке. Операция замены использует тот же механизм обратных ссылок. С помощью подвыражений мы можем запомнить что-либо, а затем произвести операцию замены с найденным подвыражением. По результатам урока мы научимся производить операцию замены с помощью регулярных выражений, а также узнаем нюансы данной операции и рассмотрим ряд практических примеров, позволяющих понять суть работы и использования операции замены. Урок 14. Просмотр вперёд и назад: От автора: в этом уроке мы с вами продолжим изучение т.н. позиционных метасимволов. Мы уже работали с такими метасимволами. Это метасимволы начала и конца строки, метасимволы границы и не границы слова. Особенностью данных метасимволов является то, что они не ищут совпадение с символами, они ищут позицию в тексте, например граница слова. В этом уроке мы изучим несколько новых метасимволов, которые позволяют осуществлять просмотр вперед и назад. По результатам урока мы изучим 2 группы, состоящие из 4-х метасимволов: позитивный и негативный просмотр вперед, а также позитивный и негативный просмотр назад. Данные метасимволы называют позиционными метасимволами или якорями. Урок 15. Функции PHP для работы с регулярными выражениями. Часть 1: От автора: в этом уроке мы приступим к изучению функций PHP для работы с регулярными выражениями. PHP предлагает нам не такой уж большой список таких функций. Ну а список наиболее часто используемых и наиболее полезных функций – и того меньше. В этом уроке мы познакомимся с тремя такими функциями. По результатам урока мы познакомимся с тремя функциями PHP для работы с регулярными выражениями: это функции preg_match, preg_match_all и preg_replace. Эти три функции позволяют производить необходимые нам операции поиска и замены по шаблону регулярного выражения. Урок 16. Функции PHP для работы с регулярными выражениями. Часть 2: От автора: в этом уроке мы продолжим знакомиться с функциями PHP для работы с регулярными выражениями и рассмотрим еще три крайне полезные функции: preg_split(), preg_grep() и preg_replace_callback(). По результатам урока вы узнаете, какие функции предлагает PHP для работы с регулярными выражениями и как с помощью этих функций решить классические задачи с минимумом кода и усилий. Урок 17. Режим юникода в регулярных выражениях: От автора: как вы догадались из названия урока, в уроке мы с вами будем работать с кодировкой юникод. Также мы начнем работать с кириллицей. Во всех предыдущих уроках мы с вами избегали текстов кириллицей и работали исключительно с латинскими символами. И это на самом деле — неспроста, поскольку работа с кириллицей, особенно в кодировке юникод, имеет целый ряд нюансов. По результатам урока вы узнаете особенности работы регулярных выражений с текстами в кодировке юникод, а также узнаете несколько важных нюансов и подводных камней при работе с национальными символами (в данном случае с кириллицей) в режиме юникода. Урок 18. Свойства юникода: От автора: в этом уроке мы с вами познакомимся с такой возможность регулярных выражений, как свойства юникода. Эта возможность порой просто незаменима и без нее просто невозможно будет решить определенный набор специфичных задач. Данная возможность специфична и поддерживается не всеми реализациями регулярных выражений. Например, в PHP эта возможность появилась только с версии 5.1, в JS такая возможность не поддерживается. По результатам урока мы познакомимся со свойствами юникода в регулярных выражениях. Используя данную возможность, мы сможем решить целый ряд довольно специфичных задач: например, поиск дробей в тексте, поиск символов определенных алфавитов, включая как традиционные, так и довольно специфичные и т.д. Урок 19. Именованные подвыражения: От автора: в этом уроке мы с Вами рассмотрим две новые возможности работы с регулярными выражениями — это возможность использования именованных масок или подвыражений и возможность не сохранять в массиве содержимое подмасок. Обе эти возможности призваны упростить нам работу с результатами поиска. С помощью именованных подмасок мы можем создавать в массиве найденного ассоциативные элементы, ну а вторая возможность позволяет использовать в шаблоне регулярного выражения скобки только для группировки, исключая при этом сохранение результата в массив. По результатам урока мы познакомимся с дополнительными возможностями работы с подмасками. Урок 20. Практика работы с регулярными выражениями: От автора: в этом уроке мы, как и обещал ранее, будем заниматься исключительно практикой. Здесь мы рассмотрим практический пример, который будет заключаться в поиске ссылок. Где это может нам пригодиться? Например, у нас есть комментарии на сайте, в которых могут встречаться ссылки. Мы бы хотели сделать эти ссылки кликабельными, т.е. обернуть их в HTML-тег ссылки. Простая задача — скажете Вы. Однако, не все так просто и в этой, на первый взгляд, простой задаче есть свои нюансы. По результатам урока Вы узнаете как составлять регулярные выражения для решения практических задач и узнаете о правиле приоритета частного и общего.